-      1.0\1.1\1.2 = 65115C\6367B4\63788C


mov     ecx, off_65115C
mov     ecx, [ecx+24h]
   +363c  +2f9c   8 -,     ( ,    )

01 00 00 00 00 00 00 00 -   
00 01 00 00 00 00 00 00 -  
01 00 00 00 00 00 00 00 -   
00 01 01 00 01 00 00 00 -   , , *
00 01 00 00 01 00 00 00 -   , ,  

*   ?   3
==============================
 

sub_10018BB0 -    (12 )
   OBJ_



	 	  4	  , ;  

OBJ_	100982E8	0100002A	id=0, size=21C; 
LMAP	10097D10	0101002A*	id=1, size=370; +21C=0
BBRD	100974E0	0104002A	id=2, size=268; +21C=2
SNGM	10098C38	0102002A?	id=3, size=22C; +21C=0(?)
LENS	10097588	0106002A	id=4, size=27C; +21C= 1 float(?)
MRPH	10098208	0105002A?	id=5, size=238; +21C=5
SMMR	10098D28	0103002A?	id=6, size=248; +21C=0(?)
PROJ	100987B8	0107002A*	id=7, size=264;   OBJ_
PRTB	10098600			id=8, size=278; +21C=FFFF. 
PRTE	10098558			id=9, size=304; +21C=FFFF,  OBJ_  PRTB. 
LNDP	10097AE8			id=0A,size=620;   PROJ. ??
MIRR	10098040	0108002A 	id=0B,size=2EC;   PROJ 


10098D28=SMMR=Tommy.base
PRTB -  body_parts?

*   
-

call    sub_1001ED0  = _ LNDP.   :

sub_1001F950,      sub_10019210: case14=    10097B88    (+110=id=10,size=62144); ???



--
 3   dbgprintf:

100681A0:
mov     al, byte_101C1233	<-  =01.     .
sub     esp, 0F8h
test    al, al
push    esi
push    edi
jz      short loc_100681BC



--
sub_10019850     SNGM c obj_type "I3D_VISUAL_SINGLEMESH"

--
sub_100196B0     

--
sub_10015B80   56 

--
sub_10019210    ()

...
lea     eax, [ecx-2]	; ecx=  
cmp     eax, 0Fh        ; switch 16 cases


case	obj			class 	

case0 = light			10097C28	(id=2, size=1F0); +154=3( , 5=)
case1 = camera\GameCamera     	10097690	(id=3, size=4F4); 
case2 = sound?     		10098E10	(id=4, size=1EC)
case3 = sector     		10098A28	(id=5, size=234)
case4 = dummy	 		100978C0	(id=6, size=19C)
case5 = target   		10098EF0	(id=7, size=154)
case6 =				10098F90    	(id=8, size=144); user(?)    		
case7 = model_obj		10098100   	(id=9, size=158)
case8 = bone(body_parts)     	10097A48	(id=0A,size=20C)
case9 =      			100990F0	(id=0B,size=174); Frame_volume(?)    
case10= occluder		100983B8	(id=0C,size=5EC)
case11= scene     		10098898	(id=0D,size=33C); Frame_scene.  .  .
case12= city_music     		10097420	(id=0E,size=17C)
case13= shadow  		10098AE0	(id=0F,size=214); +1D4= SHD.   ??
case14=				10097B88    	(id=10,size=62144); Frame_landscap(?)    
case15=	Car_particle   		100984D0	(id=11,size=1F0)

:  1140  2   _(0C000000  )        4.
 0E   4   _  ..


10097958

_   10098B78  +110=01.    .
 +1E0       (10098AE0 , +110=0F)
--

sub_10019760      (  =  )..

 17 :

case1	Frame_visual
case2	Frame_light
case3	Frame_camera	
case4	Frame_sound
case5	Frame_sector
case6	Frame_dummy
case7	Frame_target
case8	Frame_user	.
case9	Frame_model
case10	Frame_joint	=bone=
case11	Frame_volume	??
case12	Frame_occluder
case13	Frame_scene	
case14	Frame_area	=city_music
case15	Frame_shadow
case16	Frame_landscap	???
case17	Frame_emitor



--
sub_1004E3A0 -   .

...
mov     eax, dword_101B0F14
cmp     dword_101B0F18, eax	;
jl      short loc_1004E591

add     eax, dword_101B0F1C	; 101B0F1 = 20000000	. .
mov     dword_101B0F14, eax
...


101B0F14 = 64h = .  ?




-----
10098100:   _
A0 A8 01 10 20 AF 01 10 F0 AF 01 10 10 A9 01 10 
00 AE 01 10 D0 32 03 10 00 C8 01 10 80 B1 01 10 
A0 C4 01 10 C0 B1 01 10 80 2D 03 10 90 B7 01 10 
60 BD 01 10 30 C0 01 10 C0 C0 01 10 90 32 03 10 
70 26 03 10 50 41 08 10 50 41 08 10 60 CF 01 10 
B0 27 03 10 10 27 03 10 A0 28 03 10 40 29 03 10 
F0 29 03 10 B0 2A 03 10 E0 2A 03 10 10 2B 03 10 
40 2B 03 10 C0 2B 03 10 00 2C 03 10 40 2C 03 10 
70 2C 03 10 B0 2C 03 10 E0 2C 03 10 00 33 03 10 
90 33 03 10 D0 34 03 10 30 34 03 10 A0 35 03 10 
70 35 03 10 D0 35 03 10 30 33 03 10 50 33 03 10 
70 33 03 10 90 30 03 10



-----
 :


+0 =  _
+4 = ? 
+8 = 
+ =  pointer of actor?

+40 = coord_vector
+50 =  44 
+80 = coord_vector local
+90 = _
+9C = 
+AC = 4 -? 1=49\7D(), 2=00\01(), 3=00   (00\20    ), 4=.   FF   (?)
+B0 = _ 44?

+100 = pointer of scene2 name(primsector has 00000000)
+104 = pointer of obj name itself(primsector has 00000000)
+108 = 
+10C =   _(  ),   ?  PHbox74    occluder286
+110 =    (01=,06=,09=_,0F=shadow,11=car_particle,05=sector,02=light,04=sound ... )
+114 =  . _(+90)
+118 = - _ (   )

+11c =   
+120 = pointer of parent	
+124 = pointer of children0
+128 =    ..(Car_particle obj  , _  )
+12 =   ..(decal  _;  ()  -   )
+130 =  ...  (  .     (-1)?)
+134 =  ...   ?
+138 =  ...    ?
+13C = - _ (? =FFFFFFFF  )
+140 =         ( -10h?)

 28  =  ?

+1D4 =   (OBJ_, PROJ, ..)



      ..


---
 :
+1D8 =  . 1,2   XX  YY  4(01 NN XX YY)(1=40,50,60,70 =  )
+1DC = ?
+1E0 =      10097FD0(add-   ?)
   +5C\+60 = .   ( ),     2(_)
+1E4 =     10098374 -  0
    +1\+20    +5\+60

+210 =  =   ?  0  ,  (    10 ?))   sub_10062640, sub_10036840(=+80).
                  .
+214 =  =   (. )   sub_1003680(=+84),  +88.
+218 =  = .    (?)    ,   ..
	sub_100369E0: 10036DA7  mov dword ptr [ebx+218h], 3F800000h
+21C =  =  LM_level- ( -).   0.

---
 _:
+150 =   
+154 = pointer of model name address  RAW (Models\taxi00.i3d)


---
 ..

+0	B8870910	  PROJ
+4	0000000	? 01
+8	0
+	0
+10...+4		 44 (  )
+50...+8		 44( ) (  )
+90\+94\+98		_
+9\+A0\+A4\+A8		
+AC			 -
+B0...+D4		  33 (  ) + =1.5 (  ).     			  
+D8...+F		  33 (  ) +  (  )

+100-10		  (      _)
+110	01000000	  (01=)
+114			=  _(  15 15 50  = 26.67) -   .
+118			 
+11	0		=0
+120			  (, 110=05)
+124	0		 
+128			    (110=02)  ?      .
+12			   _   created_model   icon20.4ds. ???    .
+130			  .  (?)
+134	0
+138	0
+13			- _ 
+140	A8870910	 
 -     ..

+1A... +1D0 		=+B0...+D4.   33 + =1.5.      (  )     . .   - :     ,    ?   . ?;     ,    .     \ .   (   ,  - ):
-1 -1  0 
 1  1  1
 0  0  0.5

+1D4			text 'PROJ'
+1D8	00221600	_
+1DC			?   . (   )
+1E0			_?   AI01     	
+1E4			100  =   100%- (  100 -).    !
+1E8			1  =  "".  2    . .
+1EC\1F0\1F4		RGB-  (-  0.5).        1.
+1F8	0		 .   ,  .     
+1FC			    10099854 (size 58h)    .    
			    .
+200			?    

+204	0x000000	?   (-   =04):
00	   04
01	 (?)      . 
02	=01
03	=01
04	
05      = (?)      . 
06	=01
.. 	=01

+208			    . (  ).    ?(~150 ?)
+20	0000	?   16160000 = 5654 .   - ?
+210			. .     ?
+214			  ?  S  0000 ..0216?
+218	0
+21			??
+220	0
+224	0
+228			??
+22	0
+230			 .  
+234			 = .    ?   +210.
+238	0
+23			    . ( 48h?):
 +0=  
 +4=FFFFFFBF
 +8=01000000
 +c=0
 +10=0
 +14=  Omni sector
 +18=   10099854()( 58h)
 +1=0
 +20=   
 +24=0
 +28=01
  5 +2(?)

+240	0
+244	0
+248	0
+24			=+118. _ . .
+250	0000000	? .    .   +210\+234
+254	0000000	? .    .   +210\+234
+258			  . =+120(?)
+25	0		    ( ).  +1F8  ,    01 .
+260	0000803F	?    
 7 +2. =_?


loc_100443B2   ,    .



---
 :
+0	 10097c28	 

+154			=_(03  , 05=)
+15			RGB-   (   ?).   DLL.
+168			 25 =   (   %% ?)(>100    )
+16			 60 = ?

+190\194\198		RGB-   
+19			? =  (+90\94\98) / 3 * [+168]  = [+114] * [+168] =   ?

+1D0			? =  (+90\94\98) * 10
+1D4			? = [+1D0] - [+19C]  ( )
+1D8			? =  [+19]
+1DC			 =     ( +1EC)
+1EC			 = [+1DC]*[+19C] =   





---
 :
+1D0	?		-  10\20? sub_10047DD0  



---
  (   ):
MRPH	10098208

+1E0			    10097FD0( 78h)  
+1E4			    10098374( 38h)  0

+21	02000000	?(-  = 05  ),  01000000   

   6  .    :
+220	08000000	?  ,   (_?).  - 
+224	01000000	?  0,   
+228			?    0
+22			?  20h .  0
+230			?  01
+234	00000000	?


 21  234           .
 228\22:   2   1;0;0;0; 0;0;0;0.    .

-
   10098374  \ :
+0	10098374		 
+4	3D000000\38080000	?
+8				= (   )
+	06890100\8CDF0000	??
+10				   (?)
+14				   64560B28?   
+18	440F0000\B3060000
+1	00000000\00000000
 3   0000FF00 (FF )
 2   

 .

-
   +230,    2     (   ):

 \ 
+0	01000000
+4	01000000
+8				1.
+	02000000\03000000	?( )
 10  ( )


 1:
+0	 11010000 		= S  . .     (       )
+4				    (?)   = 
+8				   . - . .
 2  

 .




=========================================
  10097FD0(size 68h?):

+0 			  10097FD0
+4 	02
+8 	01		- (  - )(?)		
+ 			    10097F9C
...


=========================================
  10097F9C(size 48h?):

+0 =   10097F9C
+4 = 01
+8 = 14
+ =     107A8B20
...


=========================================
  107A8B20(size 48h?):

+0 =   107A8B20 (.    .    ?)
+4 = 12010000
+8 = 06
+ = 01
+10 = 10
+14 = 20
+18 =  
+1 = 40400000
+20 =  
+24 = 01
+28 = 0
+2 = 40000000
+30 =  
+34 = 03
+38 = 00100000
+3 = 0
+40			?
+44 = 00000088	 



==========================================================

_  (+110=09)



 6   (+150h   _)   ( ,   ,      ( !)   ).
  ..

 _:

+0			   
+4			? _?       (  B0).       .5(      \    )..
+8			    100973A0 ( _)
+	01000000	 .  0    (!   ),     01 (  ,  ).
+10	02000000	(    _+8).  01        +
+14			=   (    ).  7C00/25=4.96, =4960(  ,   ).       ,      (+ ).
+18			  +14
+1			=01    ; >01   (01   )
+20	0000803F	?      (    ).   ,    (   01000000  FFFFFFFF)

   (C4 )

     5  ..

+E8			?       88h(   9 ,    ..   1009798( "", =F8),   +10=     N(+),  ,       5,     )
+EC	20000000	?
+F0	09000000	?
+F4	20000000	?
+F8			?    _ s_ker  _?
+FC			?    _ s_ker27  _?
+100			?
+104	XXXX0088	 

   108(?)

:    (+10=01),   (+=01)   ,    (+14).

_         .          100973A0.
   -   .
=========================================

_ ?

  = 2C(28)

+0	100973A0	 (_ ?)
+4	02000000	?-   (?)
+8	02000000	?( 2        005BFCEA(   2  ecx+8,   _?     _+10))
+			?  ?  ?
+10			= 6    =    ! ( S=- ) 
+14	0		?
+18	0		?
+1	0		?
+20			?
+24	00000088	  
============================================================================================================================

 :


=========================================
_:

sub_4F65A0  _.


+0 =   63CE20
+10 = _
+24 = _ 
+58 =    (02daf220 = )
+68 =     
+70 = 1\0 =    _
+74 =       ( - =  +220)
+7 =       ( - =  +238h).  .
+80 =   ,     -     .
+84...up to 214h = block 400dec (for 100 cars max) with some longs(result rnd for each car?)
+214 =   (   63h)
+218 = -  _     _
+21 = .- _  2(   )
+220 =    .- _   FR_
+234 =   _ 
+238 =    _
+23 = _ (..    +70=1)


---
 +74h =    .      +220(       100 ).   -     .
     .

    :

+0   =01    .   ,   (   ).   		  .
+4  ?
+8  
+      
+10 
+14 ?
+18  = .   ,         +0  1  0
+1 ?



=========================================================

_:

car_base(   )=:
(value at 6F9464)+e4+98  for mafia 1.0
(value at 6367b4)+24+e4+98  for mafia 1.1
(value at 63788C)+24+e4+98  for mafia 1.2

-----
  _ (0063BC08):

80 33 47 00 90 35 47 00 50 37 47 00 40 3B 47 00 
40 3E 47 00 70 B4 44 00 60 8A 54 00 80 8A 54 00 
A0 8A 54 00 20 3B 47 00 50 89 54 00 00 89 54 00 
00 B7 60 00 40 68 46 00 80 6B 46 00 60 AD 59 00 
20 2C 46 00 B0 53 42 00 30 2D 46 00 A0 4F 46 00 
90 50 46 00 50 4F 46 00 40 2F 47 00 60 2F 47 00 
30 31 47 00 90 5D 46 00 80 66 46 00 60 0F 47 00 
40 11 47 00 40 4A 57 00 B0 C1 46 00 70 A6 46 00 
B0 A5 46 00 50 BA 46 00 A0 CF 44 00 00 77 47 00 
F0 76 47 00 60 11 47 00 90 C6 59 00 C0 AB 59 00 
50 AD 59 00 50 B8 53 00
--------------


+0 = C_class flag 63BC08

+4 = some car_lock status? 00,02 etc=norm; 01,03 etc=tommy may only use doors but no engine and others

+10 = actor_type value(4, dword)

+5D/+5E(same for 1.2) byte/byte - if = 01/00 then ok. if = 00/01 then engine is blocked(0 rpm), at engine starting attempt: failing with fail-sound. do not do 00/01 when engine is on(sounds dont stop). + car_shadow dissappearing lag?

+5F(+350 for 1.2) byte - =0 when car is out of camera view, =1 when car is in camera view

+68 = pointer of obj_frame

+94 = some rpm acceleration coeff(if >1 then car accelerates itself)

+B4  - copies +2018

+19c(+11C for 1.2) = current parent's(sector) frm_id for this car


+1F0 = pointer of car_optics block start
+1F4 = pointer of car_optics block end

it has subblocks with 20h size, structure:
+0			pointer of car_optics dummy (LIGHTRE06)
+4			pointer of billboard (BILLBOARD12)
+8			pointer of decal_obj
+			pointer of light_obj
+10	0X00YYYY	optics_type & some flags(02=LIGHTIN,07=LIGHTRE,08=LIGHTBR,09=LIGHTBA..)
+14	00000080	? 80         (   ). -    .  00        (    LIGHTBA )
+18	0000C842	100 float = health
+1C	00000000	?


+200 = pointer of car_projector block start (projector subblock size = 18h or 1Ch?)
+204 = pointer of car_projector block end
+208 = +204 (?)

subblock structure:
+0 = pointer of PROJECTOR dummy
+4 = pointer of decal_obj
+8 = pointer of light_obj
+c = pointer of unknown metaobj_class 10099854
+10 = pointer of unknown metaobj_class 10099854
+14 = pointer of unknown metaobj_class 10099854


metaobj_class 10099854(texture_settings_metaobj ?)(size=58h):
+0 			class type id 10099854
+4 	XXXX0000	?
+8  			pointer of unknown metaactor_class 633D3328(size=98h)
+c 	00000000	?
+10 	01000000  	?
+14 	02000000	?
+18 			pointer of texture path string metaobj(size=28h)
+1C 			pointer of texturename.BMP
+20 			pointer of unknown string metaobj(size=18h)
+24	00000000	?
+28	X000X000	?
+2c	XX000000	?
+30	00000000	?
+34	00000000	?
+38	00000000	?
+3c	00000000	?
+40	01000000	?
+44	00X00000	?
+48	00000000	?
+4C	00000000	?
+50	XXXXXXXX	?
+54	00000088	obj end


unknown metaactor_class 633D3328 format(size=98h):
+0 			class type id 633D3328
+4			pointer
+8			pointer
+c	17000000	?		
10	03000000	?
14	0000000c	?
+18	02000000	?
+1c	00200000	?
+20	00000000	?
+24	40000000	?
+28	40000000	?
...(zeros)...
+90	XXXXXXXX	?
+94	00000088	obj end


texture path string metaobj format(size=28h): 
+0	01000000	sting flag
+4	0X000000	text lenght (1C max?)
+8			text 'Maps\texturename.BMP'
+20	XXXXXXXX	?
+24	00000088	obj end


unknown string metaobj format(size=18h):
+0	01000000	sting flag
+4	00000000	?
+8			?
+c			?
+10	XXXXXXXX	?
+14	XXXX0088	obj end		



+220((+1a0 for 1.2)) = float =~0.7. car_speed makes it less

+228(+1a8 for 1.2) = car using time(in sec). its stops in ~ 7sec after we go out of a car

+23C(+1bc for 1.2) = if 0 then traffcars ignore our car(breaking)

+244(+1C4 for 1.2) = handbreak using(1/0, byte)

+294 byte =last car deal status? 0-0B? bitflags?
1=car moving 
2= car stays with engine on(but without driver?)
3= car got breaking
4=engine off
5
6=car stays with engine off
9 when car isnt calmed(at repair)
..

+297 byte =0 when car moves or when engine is off, =1 when car stays
+298 long = some timer linked to +294 value changing

+2A0(+220 for 1.2) = some engine_power coeff(0..1, float). each engine_health changing recalculates this value

+2A4(+224 for 1.2) = engine_health(0-100 float)
+2A8((+228 for 1.2)) = engine_health_max

+2D0(+250 for 1.2) = SMOKE_MOTOR vector

+2DC(+25C for 1.2) = gear_box health(0-100 float)
+2E0((+260 for 1.2)) = gear_box health_max

+308(+288 for 1.2) - stores value=address of deform_block begin
+30C(+28c for 1.2) - stores value=address of deform_block end.
 
each deform_subblock has 13 dword params. so subblocks count = delta(end-begin)/13*4. each car obj with any deform_subtype has here own subblock.
subblock struct:
+00 long1 = frame identificator
+04 long2 = some address
+08 long3 = some address 
+0C long4 = deform_type id
+10 long5 = some address
+14 long6 = some address
+18 float7 = max of health
+1C float8 = deform_antidurability(for example if 0 then glass will dieing without texture changing; =0 for body,spz,..)
+20 float9 = current health
+24 float10 = health_durability(0...100)
+28\+2C\+30 = some equel longs for all objs in this list

sub_4D1A80: loc_4D1AFC(for 1.2) - reading deform_types..
deform_type id table:
01= body 
02= bumper
03= glass
04= mirror
05= light
06= wing
07= spz
08= door *no deform_obj in list?
09= roof


sub_468BC0: loc_4694CC(for 1.0) - operates with deform_block..
loc_469502: - cycle 34h(=13*4 bytes)
mov     ecx, [edi+308h]
sub     ebp, 34h

also cycle
loc_47083E:
sub     edx, 34h

sub_426EC0 for 1.2 works with 1-7 deform_type ids


+3C4(+344 for 1.2) = HEAD vector. quickload remembers edited vector

+438 = pointer of obj_frame 

+468 = some vector of SWHEEL

+474 = strange value. if 0 then 00000 odom_value on hud, no speed_line and blackscreen. when u try to drive

+484 = coord_vector of car_camera(external cams may be moved manually(till vector rewrited by exe))

+490(+628 for 1.2) = engine on\off(1/0 float). no sound stopping with 0

+4A4(+428 for 1.2) float - handbreak using(increasing(up to 4.0 for taxi) at holding key, decreasing to 0 when dont)

+4b4 = float 1. if 0 then automatic gearbox works strange. almost like manual one

+4b8 = 1 when car stays, 0 when speed >0, when we decreasing speed it listing float values 0 - 1

+500(+484 for 1.2) = -15200 at taxi(-10*car_weight?) = gravity force. "i beleive i can fly"-effect at 0 :)

+508 = smthng linked to rpm

+50C/510/514(+490/494/498 for 1.2) - dinamic result push-vector for car(around xyz of Primary sector), decreasing while time[vect=0,10,0 is nice for circle drifting impulse]

+518(+49C for 1.2) - friction force of tires(~0.5 makes nice drift-effect. good for snow_mods)

+520(+4A4 for 1.2) float - handbreak using(increasing(up to 60000 for ~ 4sec for taxi) at holding key, = 0 when dont), working together with +4A4

+524\528\52c(+4a8\4ac\4b0 for 1.2) = push_factor vector(xyz)
+530\534\538(+4b4\4b8\4bc for 1.2) = push_factor vector for stand car(w/o tommy)

+54c(+4D0 for 1.2) = exhaust effect# (long)

+550 byte -      ,    ,  .

+560(+4E4 for 1.2) = linked to rpm(less idle and less rpm aceleration up to oig.idle RPM)
+564(+4E8 for 1.2) = linked to engine_power acceleration+rpm(value #7 in vehicles - Max power at idling RPM). 
similar to +2018 but holding max rpm provides less engine_power acceleration.

+56 = PowerBandKwMax(param# 9)
+570 = PowerBandRPMlo / 60 (param# 10)
+574 = PowerBandRPMhi / 60 (param# 11)
+578 = redlineRPM / 60 (param# 4)

+584(+508 for 1.2) = fuel eating speed_coeff(float)

+588 = same as +4b8

+590 float (1000.5) = speed_limiter(m/sec). when we activate M limiter then value = 16.5(*3.6=60km/h)

+5b0(+534 for 1.2) = wheels count. if to reduce by 1 then wheels will off(starting back-right wheel from)

+5b8(+53c for 1.2) = gearbox A\M (1\0, byte(long))

+5c4 = same as +574 but no effect when param PowerBandRPMhi was edited

+5d4 ...+5e8 = idleRPM / 60  = for sounds 0 volume(?)
+604 ...+618 = same as +5d4

+624 = param# 54

+628 = param# 55

+62c = 1 when prm is increasing, otherwise = 0(float)

+634 = current rpm_line position(rotation) 0...idleRPM/60...maxRPM/60(float)
+638 = similar +634 but for some sound?
fld     dword ptr [esi+634h]
fdiv    dword ptr [esi+1F88h]
fmul    ds:flt_63BD5C


+648(+5CC for 1.2) = gear# (ffffff7f\0\1\2\3\..., long)
+64c = copies value of +648 when it changes

+654(+5d8 for 1.2) = max gear count(long)

+658 = gear R ratio(param# 21)
+660 = gear 1 ratio(param# 24)
+664 = gear 2 ratio(param# 27)
+668 = gear 3 ratio(param# 30)
+66 = gear 4 ratio(param# 33)
+670 ...
+674 ...
+678 ...
+67 ...
+680 ...
+684 = gear 10 ratio

+688(+60C for 1.2) = car speed (m/sec)
+68c(+610 for 1.2) = same as +688
+690(+614 for 1.2) = same as +688
+694(+618 for 1.2) = same as +688

+698(+61c for 1.2) = RPM coeff. better then +1f88(no idle_lag, no sound_lags). savegames dont save it.

+6a0(+624 for 1.2) = some sound slerp value(?)(0...1 float)

+6A4(+628 for 1.2) float - reacts on engine off\on status(0\1). maybe +724 writing this.

+6bc = param# 14

+60 = strange value. if 0 then gearbox works strange
+6c4 = same as +6c0

+6e0(+664 for 1.2) = car weight(float)
+6e4(+668 for 1.2) = same value as +6e0 but no effect ingame

+6e8(+66C for 1.2) = weight vector(3 floats. its 1st) (params 67,68,69 in vehicles)

+6f4(+678 for 1.2) float - multiplier for wheels turn angle(not for swheel+hands_anim)(angle may be summary >360grad hehe)
+6fc(+680 for 1.2) float - copies +6f4
+700(+684 for 1.2) float - turning speed of wheels,swheel,hands_anim
+710(+694 for 1.2) = max_result_turn_angle for wheels(0 by default; when we start turning then something cals this value and write here immmediately(+ or - sign))
+714(+698 for 1.2) = current turn_angle of wheels(starting from 0  up to +710 value max)
+718(+69C for 1.2) = some coeff for turn_angle for wheels(?)(abs)
+720(+6A4 for 1.2) = wheels turning(float 0, when wheels start turn then it increasing up to +718 value max)
loc_473513:
fld     dword ptr [esi+714h]
fdiv    dword ptr [esi+6F4h]
fmul    ds:flt_63BD60


+724(+6A8 for 1.2) byte  - reacts on engine off\on status(0/1). if to make 0 at engine on then we cant stop engine and cant go out of a car. lags with idle_sounds. 

+D0C(+C90 for 1.2) float = 0.3(for taxi), temporally zeroing at engine starting

+D14 = SWHEEL identificator

+D18(+C9C for 1.2) byte = engine status off\on(0\1)[only get value]

sub_538220..(operates with engine off?)
00538595 - C6 86 A80C0000 00 - mov byte ptr [esi+00000CA8],00
005384C1 - C6 86 A80C0000 01 - mov byte ptr [esi+00000CA8],01
delta=+70

loc_538595:  (engine offing)
mov     byte ptr [esi+0CA8h], 0     <- +D18
mov     byte ptr [esi+6B4h], 0      <- +724
mov     byte ptr [esi+66Ch], 0      <- +6DC



sub_5178E0..(loc_5178EE)..(operates with engine on/off?)
delta=+70

mov     al, byte ptr [esp+8+arg_0]
mov     dword ptr [esi+0C9Ch], 459C4000h     <- =+D0C =5000 float? hm
cmp     al, bl
mov     [esi+66Ch], bl		    <- 66c+70=+6dc
jz      short loc_517921


mov     byte ptr [esi+0CA8h], 1     <- ca8+70=+d18
mov     byte ptr [esi+6B4h], 1	    <- 6b4+70=+724



+D1C(+CA0 for 1.2) = fuel count(float)

+D24(+CA8 for 1.2) = contains raw-address of wheels_addresses_block(they going one-by-one, the count is described by +5B0(+534 for 1.2) seem), the sequence is whl0, whl1, whr0, whr1.
sub_470D30(sub_429850 for 1.2): working with gearbox health, engine health, fuelcount and wheels(checking if car may drive?)

wheel block = 1E8 bytes(488dec):
+0 long1 = address of wheel name(TomyhoAuto.WHR1)
+4 long2 = wheel identificator
+8 long3 = parent identificator
+c long4 = ?
+10/+14/+18 floats5/6/7 = local coord-vector(via changing Y we may make lowrider feature); repair doesnt change it, fullload defaults its
+11C float72 = wheel turnangle multiplier(1.0); repair doesnt change it, fullload defaults its
+120 byte=29h when car stays, =09h when car moves 
+122 byte=01 when wheel rotates "forward", =00 when "back"(=rnd(0\1) value when car stays)
+12C long76 = some address
+130 long77 = some address
+134 long78 = some address
+140 long81 = some address
+144 long82 = some address
+148 long83 = some address
+14C long84 = some address
+184 float98 = max delta for wheel axis(at breaking)
+188 float99 = curent delta for wheel axis
+18C float100 = current health
+190 float101 = max health
+194 float102 = durability



+D54, +d58 = byte FF or FD. if to make EF or ED then it will be car_invisible effect(no colls with primitives)


+d55, +d59 byte = 211(215) when car is out of camera view, = 219(223) when car is in camera view

+D90 = pointer on some block start; block has some subblocks with 24h sizes
+D94 = pointer on some block end 

+E54 = pointer of 'BODY'

+E58 = address of vehicles.bin values block

----------------------
addresses = +(E58...EA4) = params# 1...20  in vehicles.

next 11 floats = +(E58...ED0) = gear_ratio values going(for gears R 123456789 10) = params# 21,24,27,30,33,36,39,42,45,48,51
next 11 floats = +(ED4...EFC) = gear_up values(%% of maxRPM) = params# 22,25,28,31,34,37,40,43,46,49,52
next 11 floats = +(F00...F28) = gear_down values(%% of maxRPM) = params# 23,26,29,32,35,38,41,44,47,50,53

next 19 floats = +(F2C...F74) = params# 54...72

next the huge DWH block of values going(10floats*24) = +(F78...1334)
 10 floats =  params 73,105,137...361
 10 floats =  params 74,106,138...362
 ..(params 77... are not float but long)*
 ...params 96,100,160...384

 next 8 unknown params going = +(1338...1354)

 next float part going(10floats*5) = +(1358...141C)
 10 floats =  params 100,132...388
 ...
 10 floats = params 104,136...392

next 10 floats = +(1420...1444) = params# 393...402

+1448 = param 403 (short?)
+144A...144F = params 404-409(byte?)

+1450 = param 410(float)
+1454 = param 411(byte) = if roof exists 0\1
+1458 = param 412 = exhaust effect id(idle)(long)
+145C = param 413 = exhaust effect id(moving)(float)
+1460...1474 = params 414...419(float)
.....
----------------------

+1f88(+200C for 1.2) = maxRPM(+e68)/60

+1F8C(+2010 for 1.2) = fueltank capacity (float)

+1f90(+2014 for 1.2) = odom value (float)

+1FFC(+20BC for 1.2) = unknown health_max(swichshowenergy case2)
+2000(+20C0 for 1.2) = unknown_detail durability(float 0-100; >100 isnt correct)
+2004(+20C4 for 1.2) = unknown health(swichshowenergy case2)
sub_469AD0: (loc_469CC4) - repairs this detail(also fueltank)


+2014(+20D4 for 1.2) byte = 00, =01 when car enters sector tunelmnh; handle setting 01 activates car_optics(lightba+projector)
working with +19c(+11C for 1.2)

+2018(20D8 for 1.2) = RPM acceleration coeff(1, float). ~similar to +2A0 but: no idle rolling, no recalculation with engine_health. savegames saving its ok. car_repair doesnt work with this value. ideal for NOS. also it makes drift_effect. 
+201C(+20DC for 1.2) - copies this value.
+B4   - copies this value.

loc_467C32..
mov     eax, [ebp+2018h]
mov     [ebp+201Ch], eax

loc_467C53:
mov     al, [ebp+4]
mov     ecx, [ebp+201Ch]
mov     edi, [ebp+19Ch]
mov     [ebp+0B4h], ecx


+2028(+20E8 for 1.2) long = 0; increasing when +202c!0 up to his value. after that=car_explosion
+202C(+20EC for 1.2) long = time_delay before car_explosion
+2030(+20F0 for 1.2) = byte 0. if 1 then it is car explosion flag. it may be at engine or fuletank dieing. engine death generates time(10000..16000 msec) before explosion
loc_467B34 operates with it


+2078(+2138 for 1.2) = FUEL vector

+2084(+2144 for 1.2) = TANK vector

+2094(+2154 for 1.2) = fuel leaving current_coeff ( 6,9,.. long)
+2098(+2158 for 1.2) = fuel leaving original_coeff ( 6,9,.. long)
when current_coeff<original_coeff then fuel start leaving with some speed=coeff2-coeff1 (usually delta=1 ingame)
i cant find these coeffs in vehicles. taxi has coeff 6, other car has 9.. maybe they are calculated from other vehicles data. settankhitcount overwrites both these coeffs with value we set

+20AC(+216c for 1.2) = car time after the last breaking(colls with pavement too),(in msec)(long). its stops in ~ 7sec after we go out of a car, any breaking zeroes value.
+20B0(+2170 for 1.2) = 0(byte), =1 when car wheel colls with pavement.

+20B8(+2178 for 1.2) = car_switchshowenergy param2 (byte; =3 by default)

+20BC(+217C for 1.2) byte = writes 0 when car go out tunelmnh
loc_467DA5(loc_420F72 for 1.2):
mov     byte ptr [ebp+2014h], 0
mov     byte ptr [ebp+20BCh], 0

+20CC(+218  1.1) = car name (like 'TAXI') string 20h?

+2100(+21C0 for 1.2) byte = 00 when car moving; =0F when car stays

+210  		    ...   (?)
+2110		  .   =280h  
+2114		=+2110 ?

+2118		  _ (OBJ_   Box01, =,     )

+21F4 =  ??

--

+1B0 byte = 0/1 ? 1 blocking car moving. repair makes 0(00519668 - 89 81 40010000  - mov [ecx+00000140],eax)

+1F94 byte = 0/1 ? zeroed ingame

+1FBC byte = 0/1 ? linked to +2118

+1FF1 byte = 1; 0 hasnt understandable effect. repair makes it = 1

+2031 byte = car_lock_all 0/1 (manual changing doesnt lock\unlock car, command blocking other "bytes" also seem)

+2033 byte = 0/1 ? repair zeroes it

+2035 byte = 0, =1 when tommy seats as driver

+2046 byte = 0/1 ? angry_byte

+204C byte = 0/1 ? zeroed ingame

+204D byte = car_breakmotor 0/1

+2071 byte = 0/1 some car_managing blocking. if to set manually 1 then doors and engine on\off is avaliable. 
at go out from car 00464974 - 88 9E 71200000  - mov [esi+00002071],bl recalculates it to zero)

+210  		    ...   (?)
+2110		  .   =280h  
+2114		=+2110 ?

+2118 dword = pointer of car low_shadow frame(OBJ_ Box01)

+211C byte = car_lock 0/1

+2148 byte = 0/1 ?

+214B byte = 0/1 ? repair zeroes it

+2158 byte = 0/1 ? zeroed ingame

+2159 byte = 0/1 ? repair zeroes it

+215B byte = 0/1 ? zeroed ingame




======================================================================================


 _:
+0	08C06300	 _ 63C008

+10	05000000	_(05=)
+14	01000000	? ??
+18	ZZZZ0000	  _    (?)( ,  ;    8401  8501 = 388  389 = .  )
+1C	0X000000	? 
+20	0		?
 34  (?)
+54	0		?
+58			  (?)  
+5	01010001	_    (?)
+60	0		?
+64			_     (?)(01000000  ,00000100    change_mission, 00010100   load_z_mesta,.)
+68			  (     )
+6			?   
+70	A406300	 ?
+74	0		? 
+78			  
+7	0X000000	?
+80			   ( (=0C000000)  . :    )
+84			   _(   )
+88			   _
+8C	0X000000	 .  ( _).  +78=0,   00000000
+90	0Y000000	  .  +78=0,   FFFFFFFF
+94			?  _  2000     0(    ctrl_read,        ,    )
+98			? 0  ?
+9			? 0  ?
+A0	0X000000	?
+A4			? 0  ?
+A8			? 0  ?
+AC			? 0  ?
+B0	0		? ?
+B4			   
+B8			   flt [dim_flt]
+BC			=-   (  flt = +BC*4)
+C0			   frm [dim_frm]
+C4			=-   (  frm = +C4*4)
+C8			   act [dim_act]
+CC			=-   (  act = +CC*4)
+D0	0000003F	? =0.5
+D4	0		?
+D8	0		?
+D	00010000	? -?
?



---------

    --  \..

          - flt[nn],      _,     ,           .


--
  , .    _ (     )..


dim_act 10
dim_frm 9
dim_flt 8
getactiveplayer 0
getactorframe 0,1

label Main1
ctrl_read 2, holster
if flt[2] = 1, -1, Main1

frm_seton 1,0
wait 5000
frm_seton 1,1
wait 5000
goto Main1

    2 _ ..



loc_5BBA81: ; jumptable 005BB32C case 13 (FINDFRAME)

005BBAAD - 7E 06 - jle Game.exe+1BBAB5
005BBAAF - 8B 55 50  - mov edx,[ebp+50]		<-  = +80+50=+D0 =   frm_buffer
005BBAB2 - 8B 34 82   - mov esi,[edx+eax*4] <<  <-  _   
005BBAB5 - 85 F6  - test esi,esi		<-     ( )
005BBAB7 - 0F84 1DBC0000 - je Game.exe+1C76DA

EAX=00000001		<-  .     edi
EBX=00000010
ECX=00000009
EDX=07BF0B28		<- pointer on frm_buffer
ESI=0C0B3F38		<- pointer on targetframe(Tommy)
EDI=0C945A70		  01000000 (   . (mov  eax, [edi]))
ESP=0018F100
EBP=0C9FA7D0		<-    +80 ( )
EIP=005BBAB5

       (eax)  _
    _   ( )    . .

     edi.       ?         (  ?;         0).

 .  :
 ,             -   _. 
...      1(..          77,      frm_seton 1000077, 0)



---
  (  )..

     edi..  1 .   1 : 

005BBA8F - 8B 78 04  - mov edi,[eax+04] <<
005BBA92 - 85 C9  - test ecx,ecx
005BBA94 - 74 09 - je Game.exe+1BBA9F

EAX=07D690A0		<-  0E000000 
EBX=00000010
ECX=03AE9498		<-    
EDX=07D69060
ESI=03AE9514		<-  +7.  03000000 
EDI=07D69048		<- = eax+04.     (..  _)
ESP=0018F100
EBP=03AE9508		<-  +70.   
EIP=005BBA92

  edi        (    ).
    edi .
      ,        edi  ?

         .
      \   ,       ?( )

        _,    _   13=. .

    ..  _    ,      .
 ,       _(     ).





---
     _( +0)  3  1   ( frm_setscale):

loc_5C3620:	; jumptable 005BB32C case 247

005C3641 - 8B 4D 50  - mov ecx,[ebp+50] <<
005C3685 - 8B 45 50  - mov eax,[ebp+50] <<
005C369A - 8B 55 50  - mov edx,[ebp+50] <<

-
        _ :

005C3644 - 83 3C 81  00 - cmp dword ptr [ecx+eax*4],00 <<
005C3690 - 8B 0C 90   - mov ecx,[eax+edx*4] <<
005C369D - 8B 04 8A   - mov eax,[edx+ecx*4] <<



---

   :


mov     ecx, [ebp+1Ch] 
push    ecx
mov     ecx, esi
call    sub_6065D0

   , ,     _(   _ )
   sub 6065D0.
+          _ .

-
sub_6065D0 proc near
arg_0= dword ptr  4

mov     eax, [ecx+4]
mov     ecx, [esp+arg_0]
lea     eax, [eax+ecx*8]
retn    4

   eax,  eax+4         _.



...


=========================================================


 _..

15-. vagcisterna4

  ( = 1B8):
+0	F0CF6300	  0063CFF0(, _=1E(30))
+4	0
+8	0
+	01000000	?
+10	1E000000	_
+14	01000000	?
+18	17000000	?
+1	01000000	 .  00=( ), 01=, 02=( _?)


+20	0
 
..

+120			 
+124			 

+128			 44(?)
+168	01000000	?
+16C	0F000000	?
+170			 
+174			 
+178			 
+17			 2.04 ?

+180	0		= - !    ,   .
+184			WagonWheelBase	=5.2	
+188			WagonLength	=9.4
+18			WagonSpeed	=5.0
+190			WagonAccel	=0.5
+194	0		?     =
+198			  _+70(  ,   = A4C06300).  _    ( ebp)
+19	01000000	   _(?) (call sub_5C8CA0)	
 4  
 2 


--

wagon_setevent xx,yy  //  15-

xx =   
yy = (?)    ,         (  _  +70   ,    )



0053EDDD - 8B 86 9C010000  - mov eax,[esi+0000019C] <<   .    . (     ?)

mov     eax, [esi+19Ch]
push    eax
call    sub_5BACB0

----

loc_5405A8:             
push    2Eh		; Ch		 ''
push    esi             ; Str		 ?
call    _strrchr			  ?
add     esp, 8
test    eax, eax			   0  ()  ?
jz      short loc_5405BA


----

sub_508150    rail1  rail2.   ?     sub_5FED70.   18h = 

----


 kolo   ( ,     4  8).
   .   ,         .

..._( _  )



===========================================================


  .

loc_5FEEB9:      ; jumptable 005FED95 case 7
push    36Ch
...
call sub_4D74E0 -   


---
  ( 3A0h(?)):
+0	D0CB6300	  63CBD0
+4	0
+8	0
+	01000000	?
+10	08000000	_(08=)	
+14	01000000	?
+18	XX000000	   .   05  (   17000000 )
+1	0		? 0=  ?     \\
+20	0
	
+24	coord_vector	 	;      ( ),   	
+28			 
+2			 

+30	rot_vector	;      ( )	
+34
+38

+3 	 _( 2)
+40
+44

+48	 
+4
+50

+54	0	
+58			  ()
+5	01010001	
+60	0
+64	00000100	
+68			   	
+6	0

+70	..   -.  	
+74
+78

+7	0A000000	?
+80			 
+84			 
+88			 
+8			? =47.0

+90	_   .   ,     ,     .      (   )   \  (""       . ?)
+94
+98

+9	_         (   (?))
+A0
+A4

+A8	0A000000	?
+AC			 
+B0			 
+B4			 

+B8			   (   ?         0  ~6.5( 2,     ))
+BC	0

+0	0
+4	0
+8			  .1( 18h,   )
+	<+8+18h>	  . 2( 58h( 40h=,    ))

+D0			  . 
+D4			 .  (  (~ 1.0\)   +D0).  ( .:        0, , ,    .  -   - (    ))
+D8			_.   .   0   +D0(    ),     10000 (-=10000)
+D	0X000000	?    +D0(?)  00\07  , 09  , 04   

+E0	0
+E4	0
+E8			  .3( AC(?),   _)
+E	0A000000	?
+F0	0

+F4	0
+F8	0
+F	<+E8+AC>	  .4( )
+100	0A000000	?
+104	0

+108	0
+10	0
+110			  .5( 40h). -  44. -      
+114	00000000	?
+118	0

 15  (3Ch)

+158	0A010000	?  _? = 266  . -=0. -    
+15C	581B0000	?  _? =7000  . -=200 (8000000h). -    
+160			 
+164			 

  44(40h)

+1A8	0		? - (?)	=0		-=01 
+1AC			 _	=8
+1B0			 		=17
+1B4			(\)		=9.72   	-=12.5
+1B8					=1		-=3.0
+1BC						=10000

+1C0	17B7D138	? - 
+1C4			?      0.09...48
+1C8			 
+1CC			 
+1D0			 
+1D4	0
+1D8	0
+1DC			 

    (50h),    ,  ?

+230			= \2
+234	0
+238	15000000	?
+23			 
+240			 
+244			 
+248	02000000
+24			 
+250	0000000	?
+254			 
+258			 
+25			 
+260	0000000	?	
+264	0
+268	0
+26C	0
+270			 
+274			 
+278	0000000	?
+27			   (  ?).   +1=  
+280	0
+284	0
+288	0
+28C			 
+290			 
+294			 
+298	0

+29C	9E000000	?
+2A0	A0000000	?
+2A4	A1000000	?
+2A8	03000000	?
+2AC	00000000	?
+2B0	13000000	?

+2B4			 
+2B8			 
+2BC	E8FFFFFF	?

....

+380			       (?)

...




===========================================================

100BBD3C =01    .  0    ?

loc_10062404:
mov     eax, dword_100BBD3C
test    eax, eax


========================================

sub_1001B4B0

  "!! Out of memory  I3D_frame::SetName()"




================================

DOOR actor ( 1F0(?))

  :
+0	80C16300	=   _ (63C180 =  6 = )
+4	0
+8	0
+C	01		?
+10	06000000	= _(06=)
+14	01
+18			=939 ?
+1	02		_?    00   ,  =01.   +70.
...
+68			  
+6	0
+70	00\01\02\03	  _(\\\)
+74	00000000	 (?)      (  -   )
+78	40000000	??   ,   
+7			   

+10D  00\01 =  (\). +10E     01 
+10E  00\01 =  

+110	51000000	?  . _0   11000000 (   11    , 0     , 1   51)


+125  00\01 =  (\)

+130 =  10h   (wav+00+2020..)
+140 =  10h   
+150 =  10h   
+160 =  (?)

+180 = _ !
+18 =   (?) 
+19 =    
+1A8  = ???  01000000.  00    ,  02  ,  03  .        " ...\  ".  =   ..
  01000000  _(      +1AC).
      .

+1AC  = _  _(D0070000\D1070000 =  \ )

+1B4 =   +180

+1C0... +1D8  =  ?
 2 -.



--
 _  (  +1A8)..

  :

CF070000 - 
D0070000 -  
D1070000 -  
D2070000 -   	   (.    )
D3070000 -  		         4
D4070000 -   			         4
D5070000 -   		    
D6070000 - 			    
D7070000 - 			   
D8070000 -   		    
D9070000 -  		    
DA070000 -  		    
DB070000 -  		    	
DC070000 -   	    
DD070000 -   	    
DE070000 -   	    
DF070000 -     	          4
E0070000 -   		   (),  +  
E1070000 -   		    
E2070000 -   


    +1A8: 
-      ,   -   .
-   01(),        +1AC

      _.    .


---
  +78:

  
40000000 =   
41000000 =  
  42000000 =        (?) loc_580428:  ; jumptable 00580405 cases 66,68
43000000 =    
  44000000 =        (?)
45000000 =  
46000000 =    (    )
47000000 =  
48000000 =       (= ?)


--
   ..
sub_580170:
005803F2 - 8B 02  - mov eax,[edx] <<       (    . )

-
00580405:
jmp     ds:off_580688[eax*4] ; switch jump
55055800 
2E055800 
  28045800 
 3D065800 
  28045800 
 3D065800 
 3D065800 
 3D065800 
0C045800
..  5 ..

-
loc_58040C:             ; jumptable 00580405 case 72  -    +78=48000000
mov     ecx, [edi+2C4h]
test    ecx, ecx
jz      loc_58063D
...
mov     eax, [ecx]		- ecx=   (  63C908)
push    edx			-    +78.    
call    dword ptr [eax+90h]     -  sub_4A82A0.     (    )

-
 sub_4A82A0.. 

mov     eax, off_65115C
cmp     dword ptr [eax+9Ch], 2
jl      short locret_4A82D4	-    
mov     ax, [ecx+6EEh]
test    ax, ax
jnz     short loc_4A82CD
mov     eax, 0Ah
mov     byte ptr [ecx+6F0h], 6	-    
mov     [ecx+6EEh], ax
loc_4A82CD:
mov     [ecx+6ECh], ax
locret_4A82D4:
retn    4


  :

_	+6EE  word =   ()
		+6F0  byte =   
		+6ED  byte =    (?)  FF   

    ,   :
2dogfoot.bmp....2dogfoot+.bmp...
2blood3.bmp.2blood3+.bmp....
2bfootprint.bmp.2bfootprint+.bmp....
2dirsklo.bmp....
2dirple.bmp.2dirple+.bmp....
2dirdre.bmp.2dirdre+.bmp....
2dirbet.bmp.2dirbet+.bmp....
2flek.bmp...2flek+.bmp

   ..
sub_48D590: 
0048DA8E - 8A 86 F0060000  - mov al,[esi+000006F0] <<

 sub_48D590  2 ,     nofity  (  ) :
mov     ecx, [eax]
push    200h			-  ?   
push    offset sub_48D590	-   
push    eax
call    dword ptr [ecx+1Ch]


sub_5ED9D0 -    64h ?  .     100 .



-
sub_5860B0:
00586345 - 8B 02  - mov eax,[edx] <<        . 


--
   +1A8..

 1    :

sub_43AC90:		  ~ 20 
0043AD3E - 8B 19  - mov ebx,[ecx] <<
0043AD40 - 89 1E  - mov [esi],ebx
0043AD42 - 8B 59 04  - mov ebx,[ecx+04]

EAX=0AB2FF80
EBX=00000001
ECX=219500C0	  01000000
EDX=0AB2FF80
ESI=0AB2FF80
EDI=00000001
ESP=0018F7F0
EBP=00000000
EIP=0043AD40


--
   +1A..

  (~ 2 \):
0061BE50:
0061BE78 - 4E - dec esi
0061BE79 - 8B 04 B0   - mov eax,[eax+esi*4]
0061BE7C - 8B 48 2C  - mov ecx,[eax+2C] <<
0061BE7F - 51 - push ecx
0061BE80 - 8B CF  - mov ecx,edi

EAX=21950098
EBX=0018F874
ECX=000007D0
EDX=C08FEE40
ESI=00000305
EDI=075EA8AC
ESP=0018F7E4
EBP=00000013
EIP=0061BE7F


   ..
sub_61BF50:
0061BFBB - 8B 48 2C  - mov ecx,[eax+2C] <<

sub_43AC90:
0043AD42 - 8B 59 04  - mov ebx,[ecx+04] <<

  ..
sub_480880: -  ?  _  .    +110  4? = 63C180(_door)

:
00480AEA - C7 85 AC010000 D1070000 - mov [ebp+000001AC],000007D1 <<    
:
004808E7 - C7 85 AC010000 D0070000 - mov [ebp+000001AC],000007D0 <<    



--
   +18C..

   - .
 ,   2\:

0061BF1A - D8 59 0C  - fcomp dword ptr [ecx+0C] <<
0061BF1D - DFE0 - fnstsw ax
0061BF1F - F6 C4 41 - test ah,41


      1 (  1    ):

0061C065 - D8 59 0C  - fcomp dword ptr [ecx+0C] <<
0061C068 - DFE0 - fnstsw ax
0061C06A - F6 C4 41 - test ah,41


---

   +110..

51000000 = 01010001
11000000 = 01000001. 0  4  

  ..
50000000 = 01010000 -    
10000000 = 00010000 -    
30000000 = 00110000 -    
F0000000 = 11110000 -    
40000000 = 01000000 -    .   _ 0   
80000000 = 10000000 -    .   _ 0   

FF000000 = 11111111 -   _,   
01000000 = 00000001 -    .   _ 0   
02000000 = 00000010 -    .   _ 0   
04000000 = 00000100 - 6    _.   _ 0   
08000000 = 00001000 - 5   .   _ 0   

 ()    02\04\08
 4    .

-
sub_480880 ( )  -  \ ,  ..  _   



--
   +180(_ )..

  2\
0061BE50:
061BEA5 - 8B 10  - mov edx,[eax] <<     :    ,     		-(    ,     ,   ).

...
0061BF39    mov     al, 1    -        (    )


-
sub_61BF50:
0061BFE8 - 8B 10  - mov edx,[eax] << +1    (  , )


  sub_4CBD00 - _ _, !! =sub_593D60  1.1, =sub_594300  1.2
 ..

loc_4CC265:
push    edi
push    1
xor     dl, dl
mov     ecx, eax
mov     byte ptr [esp+8Ch+var_4], 3
call    sub_56CCC0			-  eax(    ),  eax ..
cmp     eax, 0A8h			- 0A8 =   (    )
jnz     loc_4CC424			-  ,   ...
...
loc_4CC424:
cmp     eax, 0A9h			- 0A9 =   ,  (,),  (\).. ?
jb      loc_4CC8B4      ; default	-  < ( 0A7h    ""  ),      

cmp     eax, 10Dh			- 10Dh = ??
ja      loc_4CC8B4      ; default	-  ,   ,    

sub     eax, 0A9h			-   = 64000000
shl     eax, 4				-   = 40000000?
mov     edi, eax
mov     eax, [esp+88h+var_28]
cmp     word ptr [eax+edi], 1
jnz     loc_4CC8B4      ; default

//  eax...
=7   ""   
=8   (    )
=9    (  ,     ,    )
=AA  

-
          :

loc_4CC75E:  ; jumptable 004CC601 case 9 -   (,     ).

loc_4CC83E -    +   "    ",  ..

.. 4CC7B7:
add     ecx, 20CCh		- ecx =  _
push    ecx			- ecx =   ( MERCED500K)
mov     ecx, offset word_671FB0 -   .
call    sub_55FF00		-     
test    al, al			-    
jnz     short loc_4CC7DD	-    (=01),    loc_4CC7DD(     .)

..   jnz  jmp,         .
call    sub_55FF00   2.5 .    -   .
..       sub_55FF00.

      _+2044\2045\20BD\+2036,    ( )   .
     -     .
 +20BD  +2036 (-),      .

 :
mov     ecx, off_65115C
mov     edx, [ecx+24h]
mov     eax, [edx+2F14h]  -    00000000  FF000000,    .

,     sub_55FF00     =0,  al      (  al=01).
.... sub_55FF00      :

sub_55FF00 proc near
arg_0= dword ptr  4

mov     eax, [esp+arg_0]
push    esi
mov     esi, ecx
push    eax
mov     ecx, offset dword_671EF0
call    sub_55C7E0		  -  . eax   =  
push    eax
mov     ecx, offset dword_671EF0
call    sub_55C480		  -   (?)
mov     ecx, [eax+8Ch]
mov     eax, [esi+98h]
test    ecx, eax
setnz   al
pop     esi
retn    4

  14 ( 1.0),     call  sub_55C7E0      =0.

 :

sub_55FF00 proc near
arg_0= dword ptr  4

mov     eax, [esp+arg_0]
push    esi
mov     esi, ecx
push    eax
mov     ecx, offset dword_671EF0
call    sub_55C7E0		  -  . eax   =  

 test    eax,eax
 jnz     manufacture
 mov	al,1
 pop     esi
 retn    4	
 manufacture:

push    eax
mov     ecx, offset dword_671EF0
call    sub_55C480		  -   (?)
mov     ecx, [eax+8Ch]
mov     eax, [esi+98h]
test    ecx, eax
setnz   al
pop     esi
retn    4


  \ 14 : 85C0750AB0015EC20400 90909090

 14  1.0.exe: 15FF32,   15FF12   .
     55480    ( 14) E863C5FFFF  E855C5FFFF

   \  :

 1.0:
 0x2E  50B9F01E6700E863C5FFFF8B888C0000008B869800000085C80F95C05EC204009090909090909090909090909090
               85C0750AB0015EC204009090909050B9F01E6700E855C5FFFF8B888C0000008B869800000085C80F95C05EC20400

 1.1   = sub_60DA30,     .


 1.2   = sub_60DF20

   :    8 
50B960456D00E823C5FFFF8B888C0000008B869800000085C80F95C05EC204009090909090909090

 0:  50                      push   eax
 1:  b9 60 45 6d 00          mov    ecx,0x6d4560
 6:  e8 23 c5 ff ff          call   0xffffc52e
 b:  8b 88 8c 00 00 00       mov    ecx,DWORD PTR [eax+0x8c]
 11: 8b 86 98 00 00 00       mov    eax,DWORD PTR [esi+0x98]
 17: 85 c8                   test   eax,ecx
 19: 0f 95 c0                setne  al
 1c: 5e                      pop    esi
 1d: c2 04 00                ret    0x4
 20: 90                      nop
 21: 90                      nop
 22: 90                      nop
 23: 90                      nop
 24: 90                      nop
 25: 90                      nop
 26: 90                      nop
 27: 90                      nop 


push    eax
mov     ecx, offset dword_6D4560
call    sub_60A460
mov     ecx, [eax+8Ch]
mov     eax, [esi+98h]
test    ecx, eax
setnz   al
pop     esi
retn    4
9090909090909090

  :

 test   eax,eax
 jnz   manufacture
 mov    al,1
 jmp   ok	

manufacture:
push    eax
mov     ecx, offset dword_6D4560
call    sub_60A460
mov     ecx, [eax+8Ch]
mov     eax, [esi+98h]
test    ecx, eax
setnz   al
ok:
pop     esi
retn    4


 0:  85 c0                   test   eax,eax
 2:  75 04                   jne    8 <manufacture>
 4:  b0 01                   mov    al,0x1
 6:  eb 1c                   jmp    24 <ok>
 00000008 <manufacture>:
 8:  50                      push   eax
 9:  b9 60 45 6d 00          mov    ecx,0x6d4560
 e:  e8 2a c5 ff ff          call   ffffc53d <ok+0xffffc519>
 13: 8b 88 8c 00 00 00       mov    ecx,DWORD PTR [eax+0x8c]
 19: 8b 86 98 00 00 00       mov    eax,DWORD PTR [esi+0x98]
 1f: 85 c8                   test   eax,ecx
 21: 0f 95 c0                setne  al
 00000024 <ok>:
 24: 5e                      pop    esi
 25: c2 04 00                ret    0x4 

   1.2:

 0x28  50B960456D00E823C5FFFF8B888C0000008B869800000085C80F95C05EC204009090909090909090
	       85C07504B001EB1C50B960456D00E81BC5FFFF8B888C0000008B869800000085C80F95C05EC20400

-


 loc_4CC265 :
...
cmp     dword ptr [ecx+10h], 5		-  _
jnz     short loc_4CC472
call    sub_47A790			- ,  _

  :
mov     edx, [esi+80h]
cmp     dword ptr [edx+ecx*8], 1Fh	-  1Fh=31=  detector_waitforuse  (  ) 
jnz     short loc_47A7FF
push    0
lea     ecx, [esi+70h]	
call    sub_5BAA60			-    _   

  :
push    ebx
mov     ebx, [esp+4+arg_0]		-  =0
push    esi
push    edi
mov     edi, ecx
test    ebx, ebx			-  ebx
mov     eax, [edi+1Ch]			-   _( .   )(+1Ch+70=+8Ch  )
mov     dword ptr [edi+24h], 0		-  +94h(_)
mov     [edi+20h], eax			-  _    (+90h).
jnz     short loc_5BAA84		-  =0,   
inc     eax				- eax+1
mov     [edi+1Ch], eax			-  eax   _(  .  _)
pop     edi
pop     esi
pop     ebx
retn    4


...
cmp     dword ptr [ecx+10h], 1Bh	-   _(     -)
jnz     loc_4CC5E6

...
loc_4CC5E6:				-   
mov     edx, [eax+edi+4]
add     edx, 0FFFFF830h
cmp     edx, 11h        ; switch 18 cases - 18    _(??  ,,    					     )
ja      loc_4CC8B4      ; default	  -   -(  ,    )

004CC5F9:
xor     ebx, ebx
mov     bl, ds:byte_4CC938[edx]		  -     6 -  .
jmp     ds:off_4CC910[ebx*4] ; switch jump -        

 5,6,12,13  ( , 9    off_4CC910,   loc_4CC8B4)



 :


sub_4B5040     .    sub_4B3080,      14:
loc_4CC8AA:             ; jumptable 004CC601 case 14
mov     ecx, [esi+18h]
call    sub_4B3080






   sub_4CBD00:


 14 = "  "
loc_4CC75E:  ; jumptable 004CC601 case 9 -   (,     ).
..





---
.       .
        \  ..


_+...
+210  		    ...   (?)
+2110		  .   =280h  
+2114		=+2110 ?
+2118		  _ (OBJ_   Box01, =,     )


 ..
loc_464962:
mov     eax, [esi+210Ch]		-     
mov     [esi+209Ch], bl
mov     [esi+3B0h], bl
mov     [esi+2071h], bl
mov     [esi+51Ch], bl
mov     dword ptr [eax+40h], 7D3h	-     +40  _ D3070000= ,    					.    D9070000=  



   _    _      :

+40 = D3070000   
+78 = DF070000     
+B0 = 0		?
+E0 = D3070000   
+118= DF070000     
+150= 0		?
+180= D4070000   
+1B8= DF070000     
+1F0= 0
+220= D4070000   
+258= DF070000     

4   A0h(160 ) ..
 

  _:
...
+0			_ (  ?)
+4
+8
+	01000000	?
+10			0     \    

+14			_ (  ?)
+18
+1
+20			  
+24			  2  _(2*40h,    )
+28	0		?
+2	0		?
+30			  _
+34	0		?
+38	0		?
+3	01000000	(?)        _.   01= ""-.
			   03,   , ( .  ) _  - 
+40			_ 
+44	00000000	?
+48			  _ ( +14)	

 -  +14:
+4			 _  (  ,    ?)
+50
+54
+58			    (  ,    ?)
+5			   2  _(2*40h,    )
+60	0		?
+64	0		?
+68			   _
+6	0		?
+70	0		?
+74	01000000	 01= ""-
+78	DF070000	_ ,  (" ")
+7	0		?
+80			  +4	

+84			_ ,   (+0),     (-  ?)
+88
+8
+90	~1 float	 ..?	
+94	0		?
+98	-0.04 float	?
+9	0		?







------
    _ .   .       .

. D5070000 (  )      CCAD9.. 
 sub_4CC950 -     .         .

mov     dword ptr [edx-0Ch], 7D5h -   
...
mov     dword ptr [eax-0Ch], 7D6h - 


 sub_4CC950     -  sub_4CB1B0 (    = _63C908 = C_Player)

-
 sub_4CB1B0  ..
:
fld     dword ptr [eax+0D1Ch]
fld     dword ptr [eax+1F8Ch]
fld     dword ptr [eax+1F88h]

 
_4CB51C: 
push    edx             ; float
call    sub_54A7A0		-   _ 
mov     al, byte_6560E4		-     
test    al, al

...
loc_4CB8FA:
mov     eax, [esi+98h]
cmp     eax, ebx		
jz      short loc_4CB915	-   +98=0(  ),    (  sub_4CBD00)

mov     ecx, [eax+10h]
cmp     ecx, 4
jz      loc_4CBA2A		-  _,      +14		
cmp     ecx, 8
jnz     short loc_4CB91C	-   _,    ,  

loc_4CB915:         
mov     ecx, esi
call    sub_4CBD00		-   _ _

..
loc_4CBA2A:
cmp     dword ptr [eax+14h], 3
jnz     short loc_4CBA3D	-   3,    (  sub_4CC950).   =3?
cmp     dword ptr [esi+0ACh], 0FFFFFFFFh
jz      loc_4CB91C		- -  _.      -,   

loc_4CBA3D:          
mov     ecx, esi
call    sub_4CC950
jmp     loc_4CB91C




esi     _.

 +98: -     (  _  . )


+40:
0 = 
1 =  ( ..   , )
2 = ( ..   , )
3 =   ( )
4 =  (?) ( \( _, , ),         ,   ..
5 =     , ,  
6 =  (    ?)
7 = 
8 = (?)
9 =   
10=  
11=   


---
 C_Player-   , :   -       ,      .

  sub_4CB1B0     sub_4942C0 -  .   +74\+78..
push    0
push    1
push    0
mov     ecx, esi
call    sub_4942C0
jmp     short loc_48BF30


-
sub_48CB40  -  .   _  

-
sub_4C6C80  + sub_48F7D0  -   

-
sub_490B50 -      



================================
 _    :



+34	sub_466B80	sub_475E40 -    call  sub_466B80
+3	sub_462C20	sub_474D90 -    call  sub_462C20( )
+44	sub_462D30	sub_474E50 -    call  sub_462D30
+48	sub_464FA0	dword_4756E4+4FCh -    call  sub_464FA0(+)
+4	dword_46508C+4	dword_4756E4+4DCh -    call  sub_465090(+)
+50	sub_464F50	dword_4756E4+51Ch -    jmp sub_464F50 ( , +)
+60	dword_465D90	dword_474E70 -    call  sub_465D90 (   _ D307\D407\DF07())
+64	sub_466680	dword_4756E4+1FCh -    jmp sub_466680

 _   _(  ),  .


-----
 sub_475E40..
...
mov     eax, off_65115C		-   
mov     ecx, [eax+24h]		-  1
mov     al, [ecx+40h]		

 1:
+0			?
 
+14	0		    
+18	0		        
+1	0		    

+40	0000000	? =01.  =00(?)
+44			  
+48	0
+4	0		    (   )
+50			   (_)
+54			    03(GameCamera)
+58			   
+5	000000	. _(17=  , 0D=_, 11=).  . 
+60	000000	._(    )
+64	0000000	? =04 , =02  _, =01  , =00 (?)
+68			    (   )(    )
+6	00000000	?  .      = 00000100
+70			?? =5
+74			?   0  1.   .      ( w?)
 9  
+9	0000803F	?       _(  )
 6  
+B8			 
+BC			=+B8
+C0			=+B8+10h
 6  
+DC			? =0.2	
+E0			=00, =01  .  _ (!)
+E4			   
+E8			   
+EC	0
...



: 
 =  (    XX00YY00).     -     _.
      ,    .
 .    _( ).
..        (         ,  +14+18).  .   .

+5\+60:  __  = 01\00,   00 ,     C (   _).
 \ =07\08.

   +50\+54\+58 =  \_\_(   )


---
  :

  +...

+29EC		10h- : +0=0  3      _ (?)
1 =   _(=   )
2 =   _-4(=  .   )
3 =  -4(?).    2( ),    ;      

 10h- 

 10h- = (\. 5\   ,     --) +  _ (?).     = +2A0C

-
 :
+0			_
+4
+8
+			 
+10			0(   ,   )    2_(  ,  				 )
+14			? 0,  0
+18			0,     
+1			0,    (    ?  _)
+20			? 0
+24			? 0,  .  .
+28			 .    ,  01(=,  )
+2			_ ,     .
+30			0,     
+34			   ( +0)




=================================
 car_shadow..

 +100=0F,     .
  10098B78, +110= 01, +1D4=SHD,    -  +1E0,    ?

---
        -  4   3 

005E8EDF - 33 C0  - xor eax,eax <<
005E8EE1 - F2 AE - repne scasb 


005E8F3D - C7 44 24 30 20000000 - mov [esp+30],00000020 <<
005E8F45 - F2 AE - repne scasb 


005E8F6F - 8A 01  - mov al,[ecx] <<
005E8F71 - 41 - inc ecx

EAX=17A14E66
EBX=00000001
ECX=07E7C704
EDX=17A14E50 -    fordorS.i3d + 0020h(   low shadow.i3d+00h,   )
ESI=07E7C704 -    fordorS.i3d   
EDI=07E7C710 -  +00
ESP=0018F920
EBP=07E77EC0	-   6F9464
EIP=005E8F71

  sub_5E8E30.        (, ..).
    .

-
  5E8FD9 eax=        .

-
  5E8ED2:
ebx= ?    0,  =01 (    )
esi=     .    (!,    ).     ?
edi=  (,.)

---
...




================================================
 

sub_44A330  (?)          


mov     ecx, off_65115C
mov     edx, [ecx+68h]   -   .   -   .

  ... 
loc_5FFFCF:
mov     al, [ecx]		
mov     [ecx+edx], al
inc     ecx
cmp     al, bl
jnz     short loc_5FFFCF

    +00 .
ecx   =   (  20h  ),           ( 00menu). -    .
ecx+108       savegame\mafia000.550  +00.    (  ).
     ??


====================================================
     :


   +154( , 05=)     :
1     sub_100205B0 (       ,        ( +50h))

100205EB - 0F84 96000000 - je ls3df.I3D_frame::UpdateHRBoundVolW+3957
100205F1 - 83 FB 05 - cmp ebx,05
100205F4 - 89 9E 54010000  - mov [esi+00000154],ebx <<
100205FA - 74 32 - je ls3df.I3D_frame::UpdateHRBoundVolW+38FE
100205FC - 83 FB 06 - cmp ebx,06

EAX=00000003	-    +154     
EBX=00000005	-     2
ECX=00000005
EDX=000036E4
ESI=0B1791A0	-   
EDI=00000000
ESP=0018D9E8
EBP=0B1791A0
EIP=100205FA


   
loc_1002064E:
cmp     dword ptr [esi+154h], 2
jnz     short loc_100206CD

     ,  cmp   

---
  :

cmp 	ebx, 5
jne    return
mov	dword ptr [esi+0x15C],0x3F800000
mov	dword ptr [esi+0x160],0x00000000
mov	dword ptr [esi+0x164],0x00000000

return:
cmp     dword ptr [esi+0x154], 2
ret

83FB05751EC7865C0100000000803FC7866001000000000000C786640100000000000083BE5401000002C3

-
    _  . 000CC700 (   20653 = 000AC0AD   ,      7  E8ADC00A009090). .      .

    300..
E8530302FF9090. .
   :

 2064E  7  call   0x100206D4 (FF15D406021090),     206D4      300: 00030010.  ,     .       .

,      sub_100206E0(         10097C80( +58)):
100206F4 - 57 - push edi
100206F5 - 8B 3A  - mov edi,[edx]
100206F7 - 89 3E  - mov [esi],edi <<	 +15
100206F9 - 8B 7A 04  - mov edi,[edx+04]
100206FC - 89 7E 04  - mov [esi+04],edi

eax =  
esi =  +15 

:
   20774   6   898818010000 (mov [eax+118h], ecx)       FF15D4060210.
   206D4   (00030010),   300   :

cmp 	dword ptr [eax+0x154], 5
jne    return
mov	dword ptr [eax+0x15C],0x3F800000
mov	dword ptr [eax+0x160],0x00000000
mov	dword ptr [eax+0x164],0x00000000

return:
mov     dword ptr [eax+0x118], ecx
ret

83B85401000005751EC7805C0100000000803FC7806001000000000000C7806401000000000000898818010000C3

!     














